#ifndef EMBRYO_INDIVIDUAL_DISPLAY_H
#define EMBRYO_INDIVIDUAL_DISPLAY_H

#include "../../../ai/ga/cpm/EmbryoIndividualDevelopment.h"
using GA::EmbryoIndividualDevelopment;

#include "../../../ai/ga/cpm/EmbryoIndividual.h"
using GA::EmbryoIndividual;

class Palette;

/* display an individual */
class EmbryoIndividualDisplay {
public:
	/* ctor */
	EmbryoIndividualDisplay(int worldWidth, int worldHeight, const EmbryoIndividual& individual, int developmentalIterations);

	/* dtor */
	virtual ~EmbryoIndividualDisplay() {};

	/* set palette */
	void setPalette(Palette const& palette);

	/* run */
	void run();

protected:
	/* update display */
	virtual void updateDisplay() = 0;

	/* get world */
	World const& getWorld();

	/* get palette */
	Palette const& getPalette() const;

private:
	EmbryoIndividualDevelopment _development; /* development */
	Palette const*              _palette;     /* palette */
};

#endif // EMBRYO_INDIVIDUAL_DISPLAY_H

